Інформація про новину
  • Переглядів: 4924
  • Дата: 1-03-2021, 19:19
1-03-2021, 19:19

3. Кодування графічних даних

Категорія: Інформатика





Попередня сторінка:  2. Двійкове кодування
Наступна сторінка:   4. Історія опрацювання інформаційних о...

З уроків інформатики в 6 класі ви знаєте, що є два способи кодування графічних даних: растровий і векторний.

Растрові зображення

Пригадаємо, що растровим називають зображення, подане як набір окремих крапок — пікселів (від англ. Picture Element — елемент малюнка). Піксель є найдрібнішим об’єктом растрового зображення.

Принцип растрового кодування графічних даних легко зрозуміти, якщо відкрити в графічному редакторі фотографію і дуже її збільшити. На рис. 3.1 показано пікселі, вишикувані в рядки і стовпці. Зображення на екрані монітора також має подібну будову, але через малий розмір пікселів ми бачимо суцільне зображення.

Кожен піксель має певний колір, і змінити колір частини пік-селя неможливо

Для кодування зображення числами потрібно:

1) поділити його на пікселі;

2) визначити розміри, тобто кількість пікселів у довжину і в ширину;

3) визначити числовий код кольору кожного пікселя.

Зазвичай ці дії виконують за допомогою пристроїв, найвідомішими з яких є цифровий фотоапарат і сканер.

Кодування кольору

Щоб закодувати двоколірне (наприклад, чорно-біле) зображення, достатньо колір кожного пікселя позначити числом 0 (перший колір) або 1 (другий колір).

Для цього вистачить одного біта, тому кажуть, що двоколірне зображення має глибину кольору 1 біт (рис. 3.2).

Глибина кольору — це кількість бітів, які використовуються для кодування певного кольору растрового зображення.

Зображення будиночка складається з пікселів восьми кольорів (32 рядки по 35 пікселів у кожному) (рис. 3.3). Для кодування восьми кольорів достатньо десяткових чисел від 0 до 7, які можна подати двійковими послідовностями довжиною 3 біти, адже 23 = 8. Отже, глибина кольору зображення 3 біти.

Побудуємо таблицю десяткових і двійкових кодів цих кольорів:

Закодуємо зображення будиночка послідовністю чисел, зазначивши його ширину й висоту (в пікселях) і коди кольорів пікселів, перелічені зліва направо рядок за рядком: 35 32 7 7 7 7 7 5 5 71 1 7 і т. д. Таким чином, за глибини кольору 3 біти довжина двійкового коду кольорів пікселів цього зображення становитиме: 35 • 32 • 3 = 3360 (бітів) або 3360 : 8 = 420 (байтів).

За глибини кольору 8 бітів (або 1 байт) можна закодувати 28 = 256 різних кольорів, а за глибини кольору 16 бітів (або 2 байти) — 216, що дорівнює 65 536 кольорам. Проте для досягнення фотографічної якості потрібна більша глибина кольору — 24 біти (224 = 16 777 216 кольорів).

Зі збільшенням числа кольорів глибина кольору зростає, що за однакової кількості пікселів зображення призводить до збільшення обсягу файлу

Отже, у файлі растрового зображення зберігаються розміри зображення та коди кольорів усіх його пікселів. Файли більшості растрових форматів містять також іншу інформацію про зображення: дані про прозорість пікселів, тип фотокамери, коментарі тощо

Маючи код растрового зображення (див. приклад 1), можна скласти програму для виведення його на екран, зобразивши пікселі квадратиками відповідних кольорів:

Векторні зображення

У векторній графіці базовим елементом є лінія (рис. 3.4).

Пригадаємо, що векторним називають зображення, що складається з графічних примітивів — геометричних об’єктів (відрізків, кіл, кривих тощо), які описуються математичними рівняннями.

У найпростішому випадку криволінійний контур графічного примітива можна розглядати як ланцюжок відрізків, тобто ламану

Контур літери К (рис. 3.5, а) тричі замінили ланцюжком відрізків, щоразу збільшуючи їх кількість на криволінійних ділянках. Як бачимо, зі збільшенням кількості відрізків зростає точність відтворення криволінійного контуру (рис. 3. 5, б, в, г).

Векторним кодом контуру в такому випадку буде послідовність чисел. Перше з них — кількість відрізків N, а наступні 2(N + 1) чисел — координати послідовних вершин ламаної.

Розглянемо рис. 3.6. Векторний код зображеного контуру з 15 відрізків міститиме 1 + 2 • (15 +1 ) = 33 числа і може бути таким:

За такого способу кодування можна послідовно записувати коди кількох контурів. Це не становитиме проблему для розкодування, оскільки кількість чисел у коді одного контуру цілком визначається кількістю відрізків, зазначеною на його початку

Складемо програму для виведення на полотно зображення, яке задано векторним кодом:

Запустивши програму, ми побачимо вікно з виведеним векторним зображенням (рис. 3.7). Зображення виявилося віддзеркаленим відносно горизонтальної осі, оскільки вісь у на полотні спрямована донизу.

У більшості випадків на практиці застосовуються значно складніші коди. Такі коди дозволяють точно описувати криволінійні ділянки контурів за допомогою кривих Безьє, колір і тип заповнення, прозорість та розмиття об’єктів тощо.

Питання для самоперевірки

1. Які є способи кодування графічних даних?

2. Опишіть особливості растрового зображення

3. Василько показав Оксані фрагмент фотографії (рис. 3.8), збільшений настільки, що стало видно пікселі, але Оксана сказала, що це підробка. Хто з них правий?

4. Якою буде довжина двійкового коду зображення розміром 2048 х 1536 пікселів, якщо глибина кольору становить 24 біти?

5. Фотографія розміром 2048 х 1536 пікселів, збережена у форматі JPG, займає на диску 2,4 Мбайта. Чому цей обсяг значно менший, ніж довжина коду, обчислена в питанні 4?

6. Поясніть, як виконується цикл for v in range(N) з прикладу 5.

Вправа з

1. У середовищі програмування Python запустіть

програму з прикладу 2. Збережіть у файл із назвою Вправа 3-1 і випробуйте, ввівши такий код зображення:

5 4 6 4 4 4 6 4 1 6 1 4 4 1 6 1 4 6 4 4 4 6.

Поясніть результат, наведений на рис. 3.9.

2 Запишіть растровий код кожного зображення, поданого на рис. 3.10. Перевірте правильність отриманих кодів за допомогою програми (див. п. 1).

3 Запустіть програму з прикладу 5, збережіть у файл із назвою Вправа 3-3 і випробуйте її, ввівши код із прикладу 4. Змініть програму так, щоб масштабний множник також вводився з клавіатури, і перевірте її роботу.

4. Змініть програму з прикладу 5 так, щоб зображення виводи

лося не віддзеркаленим

Збережіть у файл із назвою Вправа 3-4 і перевірте роботу програми

Комп'ютерне тестування

Виконайте тестове завдання 3 із автоматичною перевіркою результату

Практична робота 1

Розв'язування задач на визначення довжини двійкового коду текстових даних

Завдання: обчислити довжину двійкового коду текстових даних. Обладнання: комп’ютер, простий текстовий редактор (наприклад, Блокнот), підручник, зошит.

Хід роботи

Під час роботи з комп’ютером дотримуйтеся правил безпеки.

1. Запишіть у зошиті своє ім’я та прізвище. Визначте довжину двійкового коду записаного тексту при однобайтовому кодуванні символів

2. Запустіть текстовий редактор. Наберіть своє ім’я та прізвище через пропуск і збережіть файл із назвою Практична робота 1 у відповідній папці.

За допомогою контекстного меню файлу (команда Властивості) з’ясуйте розмір файлу в байтах і порівняйте з даними, отриманими в п. 1.

3. За допомогою фрагмента таблиці кодів KOI8-U (с. 13 підручника) закодуйте слово «байт» і запишіть його в зошиті за допомогою двійкових і десяткових кодів

4. Користуючись програмою Калькулятор, визначте приблизний обсяг пам’яті, необхідний для зберігання однієї сторінки вашого підручника з інформатики з текстом (без малюнків) і всього підручника в електронному вигляді

5. Обчисліть, скільки подібних підручників може поміститися на флеш-носії обсягом 64 Гбайти.

6. Усі розрахунки, отримані у п. 1-5, запишіть у текстовий документ і збережіть файл Практична робота 1

Завершіть роботу за комп’ютером

Зробіть висновок: як визначати довжину двійкового коду текстових даних.

 

Це матеріал з підручника Інформатика 8 клас Бондаренко (2021)

 




Попередня сторінка:  2. Двійкове кодування
Наступна сторінка:   4. Історія опрацювання інформаційних о...



^